// 初始化表单数据
export function initListenerForm(listener) {
	let self = {
		...listener
	};
	if (listener.script) {
		self = {
			...listener,
			...listener.script,
			scriptType: listener.script.resource ? "externalScript" : "inlineScript"
		};
	}
	if (listener.event === "timeout" && listener.eventDefinitions) {
		if (listener.eventDefinitions.length) {
			let k = "";
			for (const key in listener.eventDefinitions[0]) {
				console.log(listener.eventDefinitions, key);
				if (key.indexOf("time") !== -1) {
					k = key;
					self.eventDefinitionType = key.replace("time", "").toLowerCase();
				}
			}
			console.log(k);
			self.eventTimeDefinitions = listener.eventDefinitions[0][k].body;
		}
	}
	return self;
}

export function initListenerType(listener) {
	let listenerType;
	if (listener.class) listenerType = "classListener";
	if (listener.expression) listenerType = "expressionListener";
	if (listener.delegateExpression) listenerType = "delegateExpressionListener";
	if (listener.script) listenerType = "scriptListener";
	return {
		...JSON.parse(JSON.stringify(listener)),
		...(listener.script ?? {}),
		listenerType: listenerType
	};
}

/** 将 ProcessListenerDO 转换成 initListenerForm 想同的 Form 对象 */
export function initListenerForm2(processListener) {
	if (processListener.valueType === "class") {
		return {
			listenerType: "classListener",
			class: processListener.value,
			event: processListener.event,
			fields: []
		};
	} else if (processListener.valueType === "expression") {
		return {
			listenerType: "expressionListener",
			expression: processListener.value,
			event: processListener.event,
			fields: []
		};
	} else if (processListener.valueType === "delegateExpression") {
		return {
			listenerType: "delegateExpressionListener",
			delegateExpression: processListener.value,
			event: processListener.event,
			fields: []
		};
	}
	throw new Error("未知的监听器类型");
}

export const listenerType = {
	classListener: "Java 类",
	expressionListener: "表达式",
	delegateExpressionListener: "代理表达式",
	scriptListener: "脚本"
};

export const eventType = {
	create: "创建",
	assignment: "指派",
	complete: "完成",
	delete: "删除",
	update: "更新",
	timeout: "超时"
};

export const fieldType = {
	string: "字符串",
	expression: "表达式"
};
